namespace MvvmTools
{
    using System;
    using System.Linq.Expressions;
    using JetBrains.Annotations;

    public interface IEqualityComparerBuilder<TTarget>
    {
        [NotNull] IEqualityComparerEx<TTarget> Create();

        [NotNull] IEqualityComparerBuilder<TTarget> Depends<TMember>([NotNull] Expression<Func<TTarget, TMember>> accessor);

        [NotNull] IEqualityComparerBuilder<TTarget> DependsNullable<TMember>([NotNull] Expression<Func<TTarget, TMember>> accessor)
            where TMember : class;
    }
}